# Python3 File(文件) 方法
# open() 方法
# Python open() 方法用于打开一个文件，并返回文件对象。
# 在对文件进行处理过程都需要使用到这个函数，如果该文件无法被打开，会抛出 OSError。
# 注意：使用 open() 方法一定要保证关闭文件对象，即调用 close() 方法。
# open() 函数常用形式是接收两个参数：文件名(file)和模式(mode)。
import csv


def 文件的创建和写入():
    _file = None
    try:
        # 可以发现，test.txt文件中多了一行"Hello World"。但如果我们再次运行程序，test文件中还是只有一行HelloWorld而不是两行。也就是说，"w"模式下，如果文件存在且有内容，会将内容先清空再写入。
        # 如果我们只是想在文件后面续写，不影响之前内容，只需把"w"模式换成"a"追加模式
        _file = open('test.txt', 'a')
        _file.write('Hello python\n')
    except Exception as e:
        print(e)
    finally:
        if _file is not None:
            _file.close()


def 文件的读取():
    file_r = None
    try:
        file_r = open('test.txt', 'r')
    except Exception as e:
        print(e)
    else:
        content = file_r.readlines()
        for x in content:
            str1 = x.replace('\n', '')
            print(str1)
    finally:
        if file_r is not None:
            file_r.close()


# 列表方式写入
def CSV文件的创建():
    header = ['name', 'subject', 'score']
    data = [['张三', '语文', 100], ['李四', '数学', 80], ['王五', '英语', 90]]
    with open('students.csv', 'w', encoding='utf-8', newline='') as f:
        write = csv.writer(f)
        write.writerow(header)
        write.writerows(data)
    if f is not None:
        f.close()


# 用列表方式读取
def CSV文件读取():
    with open('students.csv', 'r', encoding='utf-8') as f:
        # 创建读取对象
        read = csv.reader(f)
        for index, item in enumerate(read):
            if index != 0:
                print(','.join(item))
    if f is not None:
        f.close()


def test():
    f = open('students.csv', 'r', encoding='utf-8')
    list1 = []
    for line in f:
        list1 = list1 + line.strip('\n').split(',')
    print(list1)
    f.close()


test()
# CSV文件的创建()
# CSV文件读取()
# 文件的创建和写入()
# 文件的读取()
